CryptoJS AES加密

使用CryptoJS加解密敏感数据

加密模式:AES-128-CBC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 服务端提供密钥与偏移量
// 'key' => '0123456789abcdef'
// 'iv' => 'abcdef0123456789'

import CryptoJS from 'crypto-js'

const AES_KEY = '0123456789abcdef' // 密钥, AES-128 需16个字符, AES-256 需要32个字符
const AES_IV = 'abcdef0123456789' // 密钥偏移量,16个字符

const key = CryptoJS.enc.Utf8.parse(AES_KEY)
const iv = CryptoJS.enc.Utf8.parse(AES_IV)

// 加密
export function encrypt(data) {
const srcs = CryptoJS.enc.Utf8.parse(data)
const encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return encrypted.toString()
}

// 解密
export function decrypt(data) {
const decrypted = CryptoJS.AES.decrypt(data, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
})
return CryptoJS.enc.Utf8.stringify(decrypted).toString()
}
1
2
3
4
5
encrypt('test')
// 'cExA749M38c0L1J3HY6WTA=='

decrypt('cExA749M38c0L1J3HY6WTA==')
// test